Авторизация пользователей

Помимо каналов где каждый кто знает имя канала может подписаться на него, есть возможность авторизации пользователей на комет сервере и отправки личных сообщений пользователям по их идентификаторам. Авторизация пользователя происходит в 2 этапа. Первый этап это отправка идентификатора пользователя в вашей системе и случайного хеша в комет сервер.


mysql> INSERT INTO users_auth (id, hash )VALUES (1, 'auth_hash1');

  • Здесь строка auth_hash1 - это текстовый ключ авторизации. Вы его сами генерируете на своём сервере и отправляете сначала в комет по средствам insert запроса в таблицу users_auth, а затем передаёте в JavaScript для авторизации конкретного пользователя на комет сервере.
  • Числовой_Идентификатор_пользователя - Это id пользователя на вашем сайте, любое целое положительное число не более чем из 9 цифр.

// На втором этапе эти сведения (идентификатор пользователя и хеш) надо передать в JavaScript Api
$(document).ready(function()
{
    CometServer().start({dev_id:15, user_key:"auth_hash1", user_id:"Числовой_Идентификатор_пользователя" })
});

И теперь пользователь будет авторизован на комет сервере.

Отправка сообщений для авторизованных пользователей

При отправке сообщений авторизованным пользователям по их идентификатору (insert запрос в таблицу users_messages) сообщения доставляются пользователю на все устройства (До 16 устройств) на которых он прошёл авторизацию в данный момент. Это очень удобно в том случаи если человек зашёл на ваш сайт и авторизовался на нём более чем с одного устройства (к примеру телефон и компьютер или просто в двух разных браузерах сидит одновременно).

Если человек в данный момент ofline то сообщение помещается в очередь сообщений и будет доставлено когда человек появится online.

Основное назначение очереди сообщений это доставка сообщений после кратковременного перехода человека в ofline. Например в тех случаях когда человек обновляет страницу сайта на которой было открыто соединение он уходит в ofline примерно на 1 секунду.

Подписка на получение личных сообщений

Для того чтобы получать личные сообщения. Надо подписаться на них. Подписка на сообщения с именем события "event1" от сервера доставленные в соответствии с данными авторизации (то есть по id пользователя) осуществляется следующим образом.

CometServer().subscription("msg.event1", function(e){ console.log(e)})

Канал msg относиться к списку каналов с особыми свойствами

Определение статуса авторизации

Что бы определится авторизовались мы на комет сервере или нет есть несколько специальных функций

Функция isAuthorized вернёт текущее значение состояния авторизации. Бывает три значения в ответе.

  • undefined - статус ещё не определён, на пример не было подключения или оно в процессе.
  • true - авторизованы
  • false - не авторизованны

cometApi.isAuthorized()

Функция onAuthSuccess служит для подписки на оповещения о том моменте кода статус поменялся с любого на "авторизован"


cometApi.onAuthSuccess(function()
{
     alert("Авторизовались успешно")
})

Функция onAuthFalill служит для подписки на оповещения о том моменте кода статус поменялся с любого на "не авторизован"


cometApi.onAuthFalill(function()
{
     alert("Не авторизовались")
})

Онлайн демо отправки личных сообщений

Код примера online demo on github Смотреть на codepen.io

Откройте пример в двух или более браузерах, Скопируйте ваш USER_ID из одного окна и вставьте его в другое окно. В поле с подписью Identificator of user who must will receive the message введите текст сообщения и нажмите отправить. Вы увидите что сообщение придёт только в то окно у которого задан то же USER_ID который вы и указали при отправке.

See the Pen CppComet auth chat example by Trapenok Victor (@Levhav) on CodePen.